// 引入axios
import axios from 'axios'

let baseUrl = "http://localhost:8000/"

// 创建axios实例
const httpService = axios.create({
    // url 前缀-'http:xxx.xxx'
    // baseUrl:process.env.BASE_API, // 需要自定义
    baseURL: baseUrl,
    // 请求超时时间,需要自定义
    timeout: 3000 
})

// 添加请求和响应拦截器
// 添加请求拦截器
httpService.interceptors.request.use(function(config){
    // 在发送请求之前做些什么
    config.headers.AUTHORIZATION = window.localStorage.getItem('token')
    return config
},function(error){
    // 对请求错误做些什么
    return Promise.reject(error)
})

// 添加响应拦截器
httpService.interceptors.response.use(function(response){
    // 对响应数据做点什么
    return response
},function(error){
    // 对响应错误做点什么
    return Promise.reject(error)
})


/*网络请求部分*/

/*
* get请求
* url:请求地址
* params:参数
*/
export function get(url,params={}){
    return new Promise((resolve,reject) =>{
        httpService({
            url:url,
            method:'get',
            params:params
        }).then(response =>{
            resolve(response)
        }).catch(error =>{
            reject(error)
        })
    })
}

/*
 *  post请求
 *  url:请求地址
 *  params:参数
 * */
export function post(url, params={}){
    return new Promise((resolve,reject) =>{
        httpService({
            url:url,
            method:'post',
            data:params
        }).then(response =>{
            console.log(response)
            resolve(response)
        }).catch(error =>{
            console.log(error)
            reject(error)
        })
    })
}

/*
 *  delete请求
 *  url:请求地址
 *  params:参数
 * */
export function del(url, params = {}) {
    return new Promise((resolve, reject) => {
        httpService({
            url: url,
            method: 'delete',
            data: params
        }).then(response => {
            console.log(response)
            resolve(response)
        }).catch(error => {
            console.log(error)
            reject(error)
        })
    })
}

/*
 *  文件上传
 *  url:请求地址
 *  params:参数
 * */
export function fileUpload(url, params = {}) {
    return new Promise((resolve, reject) => {
        httpService({
            url: url,
            method: 'post',
            data: params,
            headers: { 'Content-Type': 'multipart/form-data' }
        }).then(response => {
            resolve(response);
        }).catch(error => {
            reject(error);
        });
    });
}

export function getServerUrl(){
    return baseUrl;
}

export default {
    get,
    post,
    del,
    fileUpload,
    getServerUrl
}
